撰寫本系列文章目的在於提升資訊安全之實務能力,
並透過實作體悟到資訊安全領域的重要性,
本系列所有文章之內容皆有一定技術水平,
不得從事非法行為、惡意攻擊等非法活動,
「一切不合法規之行為皆受法律所約束」,
為了避免造成公司、廠商或玩家之間困擾,
所有實作不會拿已上市產品、Online Game 等等來作範例學習,
且部分具有深度、價值之內容,將會提升一定閱讀門檻(不對該技術做分析、解說),
請勿透過本系列文章所學,從事任何非法活動,請不要以身試法!!!
首先開始前要先說一下,
小弟我目前還屬於菜鳥階段,正不斷努力學習中,
若有發現錯誤或不妥之處還請不吝賜教。
歡迎大家多多留言,互相交流交流。
那就開始今天的主題吧~~
大家一定都知道防毒軟體會監控 Process 的新建,
假設發現惡意(黑名單)的 Process 就不能讓它跑起來,
想要實現這樣的技術有幾個方法:
我們今天就要來來談談:CreateProcessNotifyRoutine
在 Kernel 中有個東西叫做 PsSetCreateProcessNotifyRoutineEx,
我們來看看它在 MSDN 中寫的資訊:
NTSTATUS PsSetCreateProcessNotifyRoutineEx(
PCREATE_PROCESS_NOTIFY_ROUTINE_EX NotifyRoutine,
BOOLEAN Remove
);
當一個 Process 正要跑起來卻還沒跑起來與要結束的時候,
系統都會 CALL 指向 PCREATE_PROCESS_NOTIFY_ROUTINE_EX 的這個 NotifyRoutine Func,
第二個 Remove 參數是指定要設置還是要移除這個 NotifyRoutine Func。
我們來看看 PCREATE_PROCESS_NOTIFY_ROUTINE_EX 在 MSDN 中的資訊:
PCREATE_PROCESS_NOTIFY_ROUTINE_EX PcreateProcessNotifyRoutineEx;
void PcreateProcessNotifyRoutineEx(
PEPROCESS Process,
HANDLE ProcessId,
PPS_CREATE_NOTIFY_INFO CreateInfo
)
{...}
當一個 Process 正要跑起來卻還沒跑起來與要結束的時候,
這個 Func 會收到系統給的 EProcess、ProcessID 與 CreateInfo,
當 Process 正在退出,CreateInfo 為 NULL。
我們來看看 PPS_CREATE_NOTIFY_INFO 在 MSDN 中的資訊:
typedef struct _PS_CREATE_NOTIFY_INFO {
SIZE_T Size;
union {
ULONG Flags;
struct {
ULONG FileOpenNameAvailable : 1;
ULONG IsSubsystemProcess : 1;
ULONG Reserved : 30;
};
};
HANDLE ParentProcessId;
CLIENT_ID CreatingThreadId;
struct _FILE_OBJECT *FileObject;
PCUNICODE_STRING ImageFileName;
PCUNICODE_STRING CommandLine;
NTSTATUS CreationStatus;
} PS_CREATE_NOTIFY_INFO, *PPS_CREATE_NOTIFY_INFO;
um... 有點多呢...
講這次實作的重點就好:CreationStatus
CreationStatus 這個是這次操作要返回的 NTSTATUS Values,
這個 NTSTATUS Values 可以決定這次操作的成功與否。
所以~\(0^◇^0)/
把它改成:STATUS_ACCESS_DENIED !!!
這樣 Process 就無法啟動拉~~~
來看個效果圖:
哈哈哈 成功!
在 ARK 工具中可以看到:
但是這樣不就會被發現了嗎??
有沒有什麼辦法不要讓它彈出對話框?
把它改成:STATUS_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY
這樣就不會有對話框出現惹。
NTSTATUS Values 還可以填什麼?
這裡有一大堆:NTSTATUS Values
編譯提示:
這個實作網路上滿多範例的~~可以搜尋看看或許可以找到能用的?XD
最後,
這次鐵人賽所寫的 Project 已在考慮是否要公開,
會在 Day 30 公布最後的決定... 敬請期待!!
好了,這篇就講到這結束了,
大家若有發現哪裡寫得不好或錯誤的地方,都留個言討論一下吧 XD
那我們下期見 o( ̄▽ ̄)ブ